安装Solidity编译器 |
您所在的位置:网站首页 › solidity ide › 安装Solidity编译器 |
安装Solidity编译器
版本
随后是Solidity版本 semantic versioning 除了发布外, 夜间开发构建 也可提供。虽然尽了最大努力,但夜间构建并不能保证有效,它们可能包含未记录和/或中断的更改。我们建议使用最新版本。下面的程序包安装程序将使用最新版本。 Remix我们建议使用 Remix 为小合同和 Solidity 快速学习。 Access Remix online 你不需要安装任何东西。如果您想在不连接互联网的情况下使用它,请访问https://github.com/ethereum/remix-live/tree/gh-pages并下载 .zip 如该页所述的文件。Remix也是一个方便的选项,可以在不安装多个solidity版本的情况下测试夜间构建。 本页的进一步选项详细介绍了如何在计算机上安装命令行Solidity编译器软件。如果正在处理较大的协定或需要更多的编译选项,请选择命令行编译器。 NPM/节点.js使用 npm 方便便携的安装方式 solcjs ,一个Solidity编译器。这个 solcjs program has fewer features than the ways to access the compiler described further down this page. The 使用命令行编译器 documentation assumes you are using the full-featured compiler, solc. The usage of solcjs is documented inside its own repository . 注:SOLC JS项目是从C++中派生出来的 solc 通过使用emscripten,这意味着两者都使用相同的编译器源代码。 solc-js 可直接用于javascript项目(如remix)。有关说明,请参阅SOLCJS存储库。 npm install -g solc注解 命令行可执行文件名为 solcjs . 的命令行选项 solcjs 与不兼容 solc 和工具(如 geth )期望的行为 solc 不与合作 solcjs . Docker可使用 solc 图像来自 ethereum 组织。使用 stable 最新发布版本的标签,以及 nightly 对于开发分支中可能不稳定的更改。 Docker映像运行编译器可执行文件,因此可以将所有编译器参数传递给它。例如,下面的命令将 solc 映像(如果您还没有它),并在新容器中运行它,通过 --help 参数。 docker run ethereum/solc:stable --help您还可以在标记中指定版本构建版本,例如,对于0.5.4版本。 docker run ethereum/solc:0.5.4 --help要使用Docker映像在主机上编译solidity文件,请装入本地文件夹进行输入和输出,并指定要编译的合同。例如。 docker run -v /local/path:/sources ethereum/solc:stable -o /sources/output --abi --bin /sources/Contract.sol您还可以使用标准的JSON接口(当将编译器与工具一起使用时,建议使用该接口)。使用此接口时,只要JSON输入是自包含的(即,它不引用任何必须 loaded by the import callback )。 docker run ethereum/solc:stable --standard-json < input.json > output.json Linux软件包可在 solidity/releases . 我们还有针对Ubuntu的ppas,您可以使用以下命令获得最新的稳定版本: sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install solc可以使用以下命令安装夜间版本: sudo add-apt-repository ppa:ethereum/ethereum sudo add-apt-repository ppa:ethereum/ethereum-dev sudo apt-get update sudo apt-get install solc我们还发布了 snap package 可安装在所有 supported Linux distros .要安装最新稳定版本的SOLC: sudo snap install solc如果要帮助测试最新开发版本的solidity和最新更改,请使用以下内容: sudo snap install solc --edge注解 这个 solc snap使用严格的限制。这是snap软件包最安全的模式,但也有一些限制,比如只访问 /home 和 /media 目录。有关详细信息,请访问 Demystifying Snap Confinement . arch linux也有软件包,但仅限于最新的开发版本: pacman -S solidityGentoo Linux有一个 Ethereum overlay 里面有一个坚固的包裹。在建立覆盖之后, solc 可以通过以下方式安装在x86_64体系结构中: emerge dev-lang/solidity MacOS软件包我们通过自制将solidity编译器作为源代码版本发布。目前不支持预制瓶。 brew update brew upgrade brew tap ethereum/ethereum brew install solidity要安装最新的0.4.x/0.5.x版本的Solidity,还可以使用 brew install solidity@4 和 brew install solidity@5 ,分别。 如果需要特定版本的solidity,可以直接从github安装自制公式。 视图 solidity.rb commits on Github . 复制所需版本的提交哈希并在计算机上检查。 git clone https://github.com/ethereum/homebrew-ethereum.git cd homebrew-ethereum git checkout安装时使用 brew : brew unlink solidity # eg. Install 0.4.8 brew install solidity.rb 静电二进制文件我们在以下位置维护一个存储库,其中包含所有支持的平台的过去和当前编译器版本的静电版本 solc-bin 。这也是您可以找到夜间构建的位置。 该存储库不仅为最终用户提供开箱即用的二进制文件,而且还意味着它对第三方工具是友好的: 内容被镜像到https://binaries.soliditylang.org,在那里可以很容易地通过HTTPS下载,而不需要任何身份验证、速率限制或使用GIT。 内容以正确的方式送达 Content-Type 标头和宽松的CORS配置,以便可以由浏览器中运行的工具直接加载。 二进制文件不需要安装或解包(与必要的DLL捆绑在一起的较旧的Windows版本除外)。 我们努力实现高水平的向后兼容。添加文件后,如果不在旧位置提供符号链接/重定向,则不会删除或移动文件。它们也永远不会被就地修改,并且应该始终与原始校验和匹配。唯一的例外是损坏或不可用的文件,如果保持原样,这些文件可能造成的危害大于好处。 文件通过HTTP和HTTPS提供。只要您以安全的方式获取文件列表(通过GIT、HTTPS、IPFS或只是将其缓存在本地),并在下载后验证二进制文件的散列,您就不必对二进制文件本身使用HTTPS。 在大多数情况下,相同的二进制文件可在 Solidity release page on Github 。不同之处在于,我们通常不会在Github发布页面上更新旧版本。这意味着如果命名约定更改,我们不会重命名它们,也不会为发布时不支持的平台添加版本。这只会发生在 solc-bin 。 这个 solc-bin 存储库包含多个顶级目录,每个目录代表一个平台。每一个都包含一个 list.json 列出可用二进制文件的文件。例如,在 emscripten-wasm32/list.json 您将找到有关0.7.4版的以下信息: { "path": "solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js", "version": "0.7.4", "build": "commit.3f05b770", "longVersion": "0.7.4+commit.3f05b770", "keccak256": "0x300330ecd127756b824aa13e843cb1f43c473cb22eaf3750d5fb9c99279af8c3", "sha256": "0x2b55ed5fec4d9625b6c7b3ab1abd2b7fb7dd2a9c68543bf0323db2c7e2d55af2", "urls": [ "bzzr://16c5f09109c793db99fe35f037c6092b061bd39260ee7a677c8a97f18c955ab1", "dweb:/ipfs/QmTLs5MuLEWXQkths41HiACoXDiH8zxyqBHGFDRSzVE5CS" ] }这意味着: 您可以在同一目录中的名称下找到该二进制文件 solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js 。请注意,该文件可能是符号链接,如果您没有使用git下载该文件,或者您的文件系统不支持符号链接,则需要自己解析它。 二进制文件也会在https://binaries.soliditylang.org/emscripten-wasm32/solc-emscripten-wasm32-v0.7.4+commit.3f05b770.js.中镜像在这种情况下,git不是必需的,符号链接是透明解析的,要么提供文件副本,要么返回HTTP重定向。 该文件也可在IPFS上找到,网址为 QmTLs5MuLEWXQkths41HiACoXDiH8zxyqBHGFDRSzVE5CS 。 该文件将来可能会在以下地址的Ssphere上提供 16c5f09109c793db99fe35f037c6092b061bd39260ee7a677c8a97f18c955ab1 。 您可以通过将二进制文件的keccak256散列与 0x300330ecd127756b824aa13e843cb1f43c473cb22eaf3750d5fb9c99279af8c3 。可以在命令行上使用以下命令计算哈希 keccak256sum 由以下人员提供的实用程序 sha3sum 或 keccak256() function from ethereumjs-util 用JavaScript编写。 您还可以通过将二进制文件的sha256散列与 0x2b55ed5fec4d9625b6c7b3ab1abd2b7fb7dd2a9c68543bf0323db2c7e2d55af2 。 警告 由于强烈的向后兼容性要求,存储库包含一些遗留元素,但在编写新工具时应避免使用它们: 使用 emscripten-wasm32/ (后退到 emscripten-asmjs/ )而不是 bin/ 如果你想要最好的表演。在0.6.1版之前,我们只提供asm.js二进制文件。从0.6.2开始,我们切换到 WebAssembly builds 性能要好得多。我们为wasm重新构建了旧版本,但原始asm.js文件仍保留在 bin/ 。新文件必须放在单独的目录中,以避免名称冲突。 使用 emscripten-asmjs/ 和 emscripten-wasm32/ 而不是 bin/ 和 wasm/ 目录,如果您想确定下载的是wasm还是asm.js二进制文件。 使用 list.json 而不是 list.js 和 list.txt 。JSON列表格式包含来自旧格式的所有信息以及更多信息。 使用https://binaries.soliditylang.org而不是https://solc-bin.ethereum.org.为简单起见,我们将几乎所有与编译器相关的内容都移到了新的 soliditylang.org 域,这适用于 solc-bin 我也是。虽然建议使用新域,但旧域仍然完全受支持,并保证指向相同的位置。 警告 这些二进制文件也可以在https://ethereum.github.io/solc-bin/上获得,但是这个页面在0.7.2版本发布后立即停止更新,不会收到任何平台的任何新版本或夜间版本,也不会服务于新的目录结构,包括非Emscripten版本。 如果您正在使用它,请切换到https://binaries.soliditylang.org,,这是一种可以直接使用的替代品。这允许我们以透明的方式对底层主机进行更改,并将中断降至最低。与 ethereum.github.io 我们无法控制的域名, binaries.soliditylang.org 保证长期工作并保持相同的URL结构。 从源代码生成 先决条件-所有操作系统以下是所有solidity构建的依赖项: 软件 笔记 CMake (版本3.13+) 跨平台生成文件生成器。 Boost (Windows上为1.77+版,其他情况下为1.65+版) C++库。 Git 用于检索源代码的命令行工具。 z3 (版本4.8+,可选) 用于SMT检查器。 cvc4 (可选) 用于SMT检查器。 注解 0.5.10之前的Solidity版本可能无法与Boost 1.70+版本正确链接。可能的解决方法是临时重命名 /lib/cmake/Boost-1.70.0 在运行cmake命令配置solidity之前。 从0.5.10开始,与Boost 1.70+的链接应该可以在没有手动干预的情况下工作。 注解 默认构建配置需要特定的Z3版本(上次更新代码时的最新版本)。在Z3版本之间引入的更改通常会导致返回的结果略有不同(但仍然有效)。我们的SMT测试没有考虑到这些差异,并且很可能会在使用与编写版本不同的版本时失败。这并不意味着使用不同版本的构建是错误的。如果你通过了 -DSTRICT_Z3_VERSION=OFF 选项添加到CMake,则可以使用满足上表中给出的要求的任何版本进行构建。但是,如果您这样做,请记住将 --no-smt 选项以执行以下操作 scripts/tests.sh 跳过SMT测试。 最低编译器版本下面的C++编译器及其最小版本可以建立坚实的代码库: GCC _,版本8+ Clang _,版本7+ MSVC _,2019版+ 先决条件-MacOS对于MacOS版本,请确保您拥有最新版本的 Xcode installed 。它包含 Clang C++ compiler ,即 Xcode IDE 以及在OS X上构建C++应用程序所需的其他Apple开发工具。如果您是第一次安装Xcode,或者刚刚安装了新版本,则在执行命令行构建之前,您需要同意许可证: sudo xcodebuild -license accept我们的OS X构建脚本使用 the Homebrew 用于安装外部依赖项的包管理器。以下是如何 uninstall Homebrew 如果你想从头开始。 先决条件-Windows您需要为Solidity的Windows版本安装以下依赖项: 软件 笔记 Visual Studio 2019 Build Tools C++编译程序 Visual Studio 2019 (可选) C++编译器和DEV环境。 Boost (版本1.77+) C++库。 如果您已经有了一个IDE并且只需要编译器和库,那么可以安装VisualStudio2019构建工具。 Visual Studio 2019同时提供IDE和必要的编译器和库。因此,如果您没有IDE并且更喜欢开发坚固性,Visual Studio 2019可能是您轻松设置一切的一个选择。 以下是应安装在Visual Studio 2019生成工具或Visual Studio 2019中的组件列表: VisualStudioC++核心特性 VC++2019 v141工具集(x86,x64) Windows通用CRT SDK Windows 8.1软件开发工具包 C++/CLI支持 依赖项帮助程序脚本我们有一个助手脚本,您可以使用它在MacOS、Windows和许多Linux发行版上安装所有必需的外部依赖项。 ./scripts/install_deps.sh或者,在Windows上: scripts\install_deps.ps1请注意,后一个命令将安装 boost 和 cmake 到 deps 子目录,而前一个命令将尝试全局安装依赖项。 克隆存储库要克隆源代码,请执行以下命令: git clone --recursive https://github.com/ethereum/solidity.git cd solidity如果您想帮助开发Solidity,您应该将Solidity分叉,并将您的个人分叉添加为第二个遥控器: git remote add personal [email protected]:[username]/solidity.git注解 这种方法将导致预发布版本的生成,例如,在这样的编译器生成的每个字节码中设置一个标志。如果要重新构建已发布的Solidity编译器,请使用github发布页上的源tarball: https://github.com/ethereum/solidity/releases/download/v0.X.Y/solidity_0.X.Y.tar.gz (不是github提供的“源代码”)。 命令行生成确保在生成之前安装外部依赖项(请参见上文)。 Solidity项目使用CMake来配置构建。您可能想要安装 ccache 以加快重复构建。CMake会自动取走它。在Linux、MacOS和其他Unices上构建坚固性非常相似: mkdir build cd build cmake .. && make或者在Linux和MacOS上更简单,您可以运行: #note: this will install binaries solc and soltest at usr/local/bin ./scripts/build.sh警告 BSD构建应该可以工作,但是没有经过Solidity团队的测试。 对于Windows: mkdir build cd build cmake -G "Visual Studio 16 2019" ..如果您要使用由安装的Boost版本 scripts\install_deps.ps1 ,您还需要通过 -DBoost_DIR="deps\boost\lib\cmake\Boost-*" 和 -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded 作为调用的参数 cmake 。 这将导致 solidity.sln 在那个生成目录中。双击该文件应该会导致visualstudio启动。我们建议建造 释放 配置,但所有其他的工作。 或者,可以在命令行上为Windows生成,如下所示: cmake --build . --config Release CMake选项如果您感兴趣,可以运行哪些cmake选项 cmake .. -LH . SMT求解器Solidity可以针对SMT解算器构建,如果在系统中找到它们,则默认情况下会这样做。每个解算器都可以通过 cmake 选择权。 注意:在某些情况下,这也可能是构建失败的潜在解决方案。 在build文件夹中,可以禁用它们,因为它们在默认情况下是启用的: # disables only Z3 SMT Solver. cmake .. -DUSE_Z3=OFF # disables only CVC4 SMT Solver. cmake .. -DUSE_CVC4=OFF # disables both Z3 and CVC4 cmake .. -DUSE_CVC4=OFF -DUSE_Z3=OFF 详细的版本字符串Solidity版本字符串包含四个部分: 版本号 预发布标签,通常设置为 develop.YYYY.MM.DD 或 nightly.YYYY.MM.DD 以的格式提交 commit.GITHASH 平台,具有任意数量的项,包含有关平台和编译器的详细信息 如果存在本地修改,则将使用 .mod . 这些部分按照semver的要求进行组合,其中solidity pre-release标记等于semver pre-release,solidity commit和platform组合构成semver构建元数据。 发布示例: 0.4.8+commit.60cc1668.Emscripten.clang . 预发布示例: 0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang 有关版本控制的重要信息在发布之后,补丁版本级别会被提升,因为我们假定只有补丁级别的更改才会发生。合并更改时,应根据semver和更改的严重性来缓冲版本。最后,发布总是使用当前夜间构建的版本,但不使用 prerelease 说明符。 例子: 发布了0.4.0版本。 从现在开始,每晚的构建版本都是0.4.1。 引入了非中断性更改-->不更改版本。 引入了一个突破性的变化-->版本升级到0.5.0。 发布了0.5.0版本。 这种行为与 version pragma . |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |